package com.york.jobmew.auth.domain.service;


import cn.dev33.satoken.stp.SaTokenInfo;
import com.york.jobmew.auth.domain.entity.AuthUserBO;

import java.util.List;

/**
 * 用户领域service
 */
public interface AuthUserDomainService {

    /**
     * 注册
     */
    Boolean register(AuthUserBO authUserBO);

    /**
     * 更新用户信息
     */
    Boolean update(AuthUserBO authUserBO);

    /**
     * 更新用户信息
     */
    Boolean delete(AuthUserBO authUserBO);

    /**
     * 登陆
     *
     * @param validCode 验证码
     *                  设备信息
     * @return
     */
//    SaTokenInfo doLogin(String validCode, String device);
    SaTokenInfo doLogin(String validCode);

    /**
     * 账号密码登陆
     *
     * @param authUserBO 用户登录信息
     *                   设备信息
     * @return
     */
//    SaTokenInfo doLoginByPassword(AuthUserBO authUserBO, String device);
    SaTokenInfo doLoginByPassword(AuthUserBO authUserBO);

    /**
     * 获取用户信息
     *
     * @param authUserBO
     * @return
     */
    AuthUserBO getUserInfo(AuthUserBO authUserBO);

    /**
     * 根据idList获取用户信息
     *
     * @param ids
     * @return
     */
    List<AuthUserBO> listUserInfoByIds(List<String> ids);

    /**
     * 获取当前登录信息
     *
     * @param loginId
     * @return
     */
    AuthUserBO getUserByLoginId(String loginId);

    /**
     * 添加用户签到记录
     *
     * @param userId 用户 id
     * @return 当前用户是否已签到成功
     */
    boolean addUserSignIn(long userId);

    /**
     * 获取用户某个年份的签到记录
     *
     * @param userId 用户 id
     * @param year   年份（为空表示当前年份）
     * @return 签到记录映射
     */
    List<Integer> getUserSignInRecord(long userId, Integer year);
}

